package com.example.pet.service;

import com.example.pet.dao.FriendsRelDao;
import com.hj.pet.api.FriendsRelService;
import com.hj.pet.constant.Code;
import com.hj.pet.model.FriendsRel;
import com.hj.pet.model.ReturnT;
import com.hj.pet.model.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class FriendsRelServiceImp implements FriendsRelService {
    @Autowired
    FriendsRelDao friendsRelDao;
    @Override
    public int save(FriendsRel friendsRel){
        System.out.println(friendsRel);
        return friendsRelDao.save(friendsRel);
    }

    @Override
    public int updateByUserId(FriendsRel friendsRel){
        System.out.println(friendsRel);
        return friendsRelDao.updateByFriendRel(friendsRel);
    }

    @Override
    public List<FriendsRel> findRelsByUser1(String user_1) {
        return friendsRelDao.findRelsByUser1(user_1);
    }

    @Override
    public List<FriendsRel> findRelsByUser2(String user_2) {
        return friendsRelDao.findRelsByUser2(user_2);
    }

    @Override
    public int delFriendRel(String user_1, String user_2) {
        return friendsRelDao.delRelByUser(user_1,user_2);
    }

    @Override
    public List<FriendsRel> findRels(FriendsRel friendsRel){
        return friendsRelDao.findRels(friendsRel);
    }

    @Override
    public ReturnT<?> addFriendRequest(FriendsRel friendsRel) {
        // user2的userInfo 是否存在 ;
        // user2 是不是已经是好友了;
        // user2的权限，有没有设置可以添加好友； todo
        // user2的状态是否可选，状态  todo
        if (0 == friendsRelDao.searchByAccount(friendsRel.getUser_2())) {
            ReturnT returnT = ReturnT.errorReturn;
            returnT.setMsg("此用户不存在");
            return returnT;
        }
        if (0 < friendsRelDao.searchByUser1AndUser2AndStatus(
                friendsRel.getUser_1(),
                friendsRel.getUser_2(),
                Code.FRIEND_STATUS_FRIEND)) {
            ReturnT returnT = ReturnT.errorReturn;
            returnT.setMsg("你们已经是好友啦～不要多次申请");
            return returnT;
        }
        friendsRel.setRel_status(Code.FRIEND_STATUS_REQUEST);
        if (0 < save(friendsRel)) {
            return new ReturnT<>(Code.SUCCESS, "申请成功，等待验证");
        } else {
            return ReturnT.errorReturn;
        }
    }

    @Override
    public List<FriendsRel> getDealingRels(String user1) {
        List<FriendsRel> request = friendsRelDao.searchRelByUser1AndStatus(user1, Code.FRIEND_STATUS_REQUEST);
        List<FriendsRel> verify = friendsRelDao.searchRelByUser1AndStatus(user1, Code.FRIEND_STATUS_VERIFIED);
        request.addAll(verify);
        return request;
    }

    @Override
    public List<FriendsRel> getDealingRels(String user1, Integer status) {
        return friendsRelDao.searchRelByUser1AndStatus(user1, status);
    }

    @Override
    public int dealFriendRel(FriendsRel friendsRel) {
        return friendsRelDao.updateByFriendRel(friendsRel);
    }

    @Override
    public List<UserInfo> getAllFriends(String user1) {
        return friendsRelDao.getFriends(user1);
    }
}
